'use strict';
const sd = require('silly-datetime');
const jwt = require('jsonwebtoken');
const md5 = require('md5-node');

// eslint-disable-next-line no-unused-vars
module.exports = app => {
  return {
    /**
     * 测试Function
     * @returns {string}
     */
    foo() {
      // app is Application的实例
      return 'hello helper';
    },

    /**
     * 包装一下出参的格式
     * @param code
     * @param msg
     * @param data
     * @returns {{msg, code, data}}
     */
    responseReturn(code, msg, data) {
      return {
        code,
        msg,
        data,
      };
    },

    /**
     * 格式化时间
     * @param date
     * @param format
     * @returns {Promise<*>}
     */
    async formatTime(date, format) {
      const t = new Date();
      t.setTime(date);
      if (!format || format === '') {
        format = 'YYYY-MM-DD HH:mm:ss';
      }
      return sd.format(date, format);
    },

    /**
     * 验证Token
     * @param token
     * @returns {Promise<*>}
     */
    async getUserInfo(token) {
      try {
        const userInfo = jwt.verify(token, app.config.jwt.secret);
        return userInfo;
      } catch (err) {
        console.log(err);
      }
    },

    /**
     * 转换密码
     * @param password
     * @returns {*}
     */
    passwordToBase64(password) {
      return md5(app.config.md5.secret + password);
    },

    /**
     * Int
     * @param string
     * @returns {number|number|number|*}
     */
    parseInt(string) {
      if (typeof string === 'number') return string;
      if (!string) return string;
      return parseInt(string) || 0;
    },
  };
};
